%pylab inline
dim=100
phiran=linspace(0,2*pi,500)
kran=linspace(-pi,pi,100)
Eran=linspace(-4,4,300)
H0=-diag(ones(dim-1),1)-diag(ones(dim-1),-1)
DAT=[]
for phi in (phiran):
H1=-diag([exp(1j*i*phi) for i in linspace(-dim/2,dim/2,dim)])
dat=[]
for k in kran:
dat.append(eigvalsh(H0+H1*exp(1j*k)+conj(H1.T)*exp(-1j*k)))
dat=array(dat).flatten()
hst,dummy=histogram(dat,Eran,normed=True)
DAT.append(hst)
#DAT.append(dat)
pcolormesh(phiran,Eran,array(DAT).T,cmap='Greys');
title('Hofstadter spectrum',fontsize=15)
xlabel(r'$\phi/\phi_0$',fontsize=20)
ylabel(r'$E$',fontsize=20);